//T10087. 骑马修栅栏
//欧拉路
#include <iostream>
#include <fstream>
using namespace std;
const int MAXN=500;
const int MAXF=1024;
int map[MAXN+1][MAXN+1];//map[u][v]表示u,v之间有多少条边
int deg[MAXN+1];
int n,f;
int ans[MAXF+2];
int k=0;
void dfs(int u){ //深搜找边
    for(int v=1;v<=n;v++)
        if (map[u][v]>0){
            map[u][v]--;
            map[v][u]--;
            dfs(v);
        }
    k++;
    ans[k]=u;
}
int main(){
    cin>>f;
    for(int i=1;i<=f;i++){
        int u,v;
        cin>>u>>v;
        map[u][v]++;
        map[v][u]++;
        deg[u]++;
        deg[v]++;
        n=u>n?u:n;
        n=v>n?v:n;
    }
    
    int start=0;
    for(int i=1;i<=n;i++) { //找第一个奇点
        if (deg[i]%2==1) {
            start=i;
            break;
        }
    }
    if (start==0) //没有奇点找第一个度数大于0的点
    {
       for(int i=1;i<=n;i++) 
            if (deg[i]>0) {
                start=i;
                break;
            }
    }
    dfs(start);
    for(int i=k;i>=1;i--) cout<<ans[i]<<endl;
}